home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 2
/
NetNews Offline Volume 2.iso
/
news
/
comp
/
std
/
c
/
50
< prev
next >
Wrap
Internet Message Format
|
1996-08-06
|
2KB
Path: Informatik.Uni-Dortmund.DE!news
From: schwab@lamothe.informatik.uni-dortmund.de (Andreas Schwab)
Newsgroups: comp.std.c
Subject: Re: sizeof(1L) in preprocesor;How to tell sizeof(double)>sizeof(long) ?
Date: 08 Jan 1996 13:58:51 +0100
Organization: Dortmund University, Germany
Sender: schwab@lamothe.informatik.uni-dortmund.de
Message-ID: <vyzd98ug7w4.fsf@lamothe.informatik.uni-dortmund.de>
References: <sc3f9vb6gk.fsf@lns101.lns.cornell.edu>
<1996Jan5.094122.16151@sq.com>
Reply-To: schwab@issan.informatik.uni-dortmund.de
NNTP-Posting-Host: lamothe.informatik.uni-dortmund.de
In-reply-to: msb@sq.com's message of Fri, 5 Jan 1996 09:41:22 GMT
X-Newsreader: Gnus v5.0.13
In article <1996Jan5.094122.16151@sq.com>, msb@sq.com (Mark Brader) writes:
|> Nobuhiko Katayama (nk@lns598.lns.cornell.edu) writes:
|>> is there any portable way to tell whether
|>> long is longer(shorter) than double in preprocessor stage ?
|> I can't think of any way.
|> You *can* use the various characteristics defined in <limits.h> and
|> <float.h>, as explained in section 5.2.4.2 (2.2.4.2), to find out
|> various information about the types. In particular, if what you
|> really want is to choose whichever of the two types can hold the
|> larger exact integer value, then in practice you need only do:
|> #include <limits.h>
|> #include <float.h>
|> #if LONG_MAX * DBL_EPSILON > 1
|> typedef long mytype;
|> #define mytype_format "%ld" /* for printf */
|> #else
|> typedef double mytype;
|> #define mytype_format "%f"
|> #endif
This doesn't work as floating point numbers aren't allowed in #if
expressions. It must be written using a runtime check (which will
probably optimized out by the compiler).
--
Andreas Schwab "And now for something
schwab@issan.informatik.uni-dortmund.de completely different"